As an increasing number of applications and services are being made available over networks such as the Internet, an increasing number of content, application, and/or service providers are turning to centralized or shared resource technologies, such as cloud computing. As the amount of traffic increases, there is a need to improve the shared resources' efficiency in processing incoming data.
Existing systems and networks utilize dedicated networking resources to process incoming data packets from users. In a computing environment where resources are shared, however, there may not be dedicated resources for packet processing. Most of the shared resources in such an environment perform various activities in addition to network packet processing. For instance, a central processing unit (CPU) may perform various other activities such as running applications in addition to processing incoming packets. Hence, whenever there is no activity in the packet processing pipeline, the CPU(s) processes other tasks until the CPU(s) receives another task or an interrupt occurs requesting the CPU(s) to process incoming data packets. Unfortunately, reliance on interrupts creates high CPU overhead and lowers the efficiency of network packet processing in a cloud environment. Further, the CPU immediately works on unrelated processes after processing the packets in the queue for a pipeline stage, which leads to a delay and more work in scheduling the CPU to resume working on packets in the queue when the subsequent packets arrive.